# 使用Python爬取虎牙直播的视频，并合成
# 视频一般以片段进行保存，链接放在m3u8中,通过观察m3u8文件中的代码z
import requests
import os
from moviepy.editor import VideoFileClip
from moviepy.editor import concatenate_videoclips


# 定义下载片段的函数
def download_video():
    # 观察片段的网址区别得到只有序号的差别，通过for循环来下载并保存到一个文件夹中
    for i in range(14):
        url = f'https://al-vod.cdn.huya.com/1048585/59a91b252545dcc3e53b1e831b45d090/89156185/60d508df2ba2d66bf6e9d345726d8098/0000000{i:02}.ts?hyvid=1055986772&hyauid=2222971974&hyroomid=2222971974&hyratio=1300&hyscence=vod&appid=66&domainid=25&srckey=NjZfMjVfMTA1NTk4Njc3Mg%3D%3D&&bitrate=2126&client=148&definition=1300&pid=2222971974&scene=vod&vid=1055986772&u=0&t=100&sv=2409201150&sdk_sid=undefined&a_block=0&dMod=wcs-153'
        response = requests.get(url)

        # 下载并保存
        with open(f'虎牙视频/{i:02}.ts', 'wb') as file:
            file.write(response.content)
        print(f'{i:02}下载完成')


# 定义合成视频的函数
def merge_video():
    # 得到视频片段文件名
    video_list = os.listdir('虎牙视频')

    # 定义一个空列表
    clip_list = []

    # 通过for循环来读取片段并保存到列表中
    for video in video_list:
        clip = VideoFileClip('./虎牙视频/' + video)
        clip_list.append(clip)

    # 合成片段
    merged_clip = concatenate_videoclips(clip_list)

    # 写入
    merged_clip.write_videofile('hu_ya.mp4')


if __name__ == '__main__':
    download_video()
    merge_video()
